Skip to content

Deploy staging to production#136

Merged
MarketDataApp merged 55 commits intomainfrom
staging
Mar 6, 2026
Merged

Deploy staging to production#136
MarketDataApp merged 55 commits intomainfrom
staging

Conversation

@MarketDataApp
Copy link
Owner

Summary

  • Bump @marketdataapp/ui through v2.8.0 → v2.8.1 → v2.9.0 → v2.9.1, with CSS path update for new dist/ layout
  • Fix user profile dropdown positioning to stay on right side at all widths
  • Add guest sign-in dropdown for non-logged-in users
  • Add Slack failure alerts to all workflows
  • Fix post-deploy workflow run-name display
  • Numerous prior navbar, dark mode, worker, policy docs, and CI improvements

Test plan

  • Build passes on staging
  • Integration tests pass (sitemap + markdown serving)
  • E2e tests pass (Playwright)
  • Verify user profile renders correctly on production after merge

Fetches the logged-in user from dashboard.marketdata.app/api/user/ and
shows their Gravatar avatar + username linking to the dashboard. Shows
a plain "Log in" link when unauthenticated. Avatar is hidden on mobile.
/cdn-cgi/zaraz/i.js only exists on the live Cloudflare site. In dev,
the Webpack dev server returns an HTML 404 for that path, which throws
"Unexpected token '<'" when the browser tries to execute it as JS.
Tailwind v4 places component styles in @layer components, but Docusaurus
ships unlayered CSS. Unlayered styles always beat layered ones regardless
of specificity, so Docusaurus's `a { color: var(--ifm-link-color) }` was
winning over the library's `color: var(--color-marketdata-darkblue)`.

Added unlayered overrides in custom.css to restore the correct brand
colors for btn-hover-orange, btn-hover-blue, and btn-orange-to-blue.
v2.0.1 moves component classes out of @layer components so they win over
unlayered CSS on specificity alone. Reverts the custom.css workaround
that was patching the cascade issue on our end.
Adds a `support` command that uses `claude -p` to investigate customer
issues against the docs repo, live API, and local SDKs. Classifies
issues as user error (generates customer reply) or real bugs (generates
internal report). Streams progress during investigation.
Adds detailed instructions for the new `lookup` tool in the support prompt documentation, enabling better investigation of customer accounts and API requests. Updates the support script to include the lookup directory for improved functionality.
…markdown responses

Markdown responses now include a Link rel="canonical" header pointing to
the production HTML page, preventing search engines from indexing markdown
as competing pages. Also adds support for the llms.txt spec index.html.md
URL pattern (e.g. /docs/options/index.html.md) alongside the existing .md
and Accept header patterns.
Upgrade @marketdataapp/ui to v2.2.0 and import components.no-reset
instead of components. The full CSS included Tailwind's preflight
reset which was overriding Docusaurus's Infima styles globally.
Move @marketdataapp/ui CSS from customCss (webpack pipeline) to a
static file loaded via <link> tag. Docusaurus 3.0.1's CSS minifier
strips native CSS nesting, losing all hover/dark/focus states.

Loading as a static file lets the browser handle CSS nesting natively.
The copy:ui-css script copies from node_modules during build/start.
The btn-hover-orange component grows padding and font-size at 64rem
(1024px), which overflows the Docusaurus navbar in the 1024-1079px
range. Override with smaller sizing in that window only; the button
resumes full size at 1080px+.
Serve cached login state immediately to avoid flicker, then always
revalidate against the API in the background. Picks up login/logout
changes without requiring a manual refresh.
Uses @marketdataapp/ui v2.3.0 navbar-overflow module to dynamically
hide navbar items by priority when the container overflows. Replaces
the 1024-1079px media query hack with a JS-driven approach.
At 731px the login button (88px + 12px margin) and search icon (36px) needed
137px but only 101px was available in the navbar right side. Scope the 12px
margin-right to desktop only (dark-mode toggle is hidden on mobile) and reduce
horizontal padding from 28px to 16px on mobile.
…ance

Docusaurus absolute-positions the search icon at mobile widths, so it
floats over the right navbar group without taking up flow space. The
login button was rendering underneath the search icon. Added 40px
margin-right to push the button clear of the search icon.
Adds cross-group overlap detection to the navbar overflow utility,
fixing the search icon overlapping the logo at very narrow viewports.
Cross-group overlap check now only compares items across different
navbar groups, fixing false positive at ~995px where the search
container and login button naturally share space within the right group.
At 769px+ the Docusaurus search expands from a 36px icon to a 155px
'Search ⌘K' bar. The previous fixed 40px margin-right was only enough
for the icon, leaving the button hidden behind the expanded bar at
769-996px. Now uses 168px margin at that range.
Replace custom React UserProfile component with the shared library's
initUserProfile() which handles Gravatar, dropdown menu, and login state.
Remove md5 dependency and old profile CSS. Update overflow selectors for
new library classes.
Mirror the login button's search clearance rules for the avatar wrapper:
- Desktop (≥997px): 12px gap before the dark-mode toggle
- Tablet (769-996px): 168px clearance for the expanded search bar
- Mobile (≤768px): 40px clearance for the search spyglass icon
…city

Resolves Infima/Docusaurus link styles overriding dropdown menu links.
The library now scopes selectors under .user-profile-wrapper.
The margin-right for search clearance was on .user-profile-wrapper (nested
inside the container div) which doesn't affect flex layout. Move it to
.navbar-user-profile, the actual flex child in the navbar.
Bump @marketdataapp/ui to v2.6.0 which wraps all states in
.user-profile-wrapper. Remove .btn-hover-orange margin/padding overrides
and .navbar-user-profile custom class — the library's wrapper handles
all spacing. Simplify overflow items to 3 (removed redundant button
selector).
…tically

Bump mobile margin from 40px to 48px (36px icon + 12px gap) to match the
desktop gap (155px bar + 13px). Add align-self: center on the wrapper so
the 40px avatar is vertically centered in the navbar instead of
bottom-aligned.
Add Playwright tests for the user-profile dropdown component:
- Auth setup logs in as playwright-free, saves session cookies
- Tests: avatar visible, dropdown opens, closes on outside click,
  closes on Escape, logout redirects to dashboard
- Update playwright config with auth-setup/user-profile projects
- Pass AMEMBER_TEST_PASS secret in CI workflows
…in tests

v2.7.0 keeps .user-profile-avatar as base class on both Gravatar img and
SVG placeholder fallback. Switch tests from #avatarButton workaround back
to .user-profile-avatar for proper class validation.
- Remove auth.setup.js and user-profile.spec.js (now owned by @marketdataapp/ui)
- Simplify playwright.config.js to only run smoke tests
- Update @marketdataapp/ui to main (includes user-profile-container utility)
- Add user-profile-container class to UserProfile wrapper to fix CLS
Also remove AMEMBER_TEST_PASS from workflows since user-profile
tests moved to the UI repo.
Override Docusaurus's absolute positioning of the search bar below 997px
so both search and profile stay in normal flex flow, with profile always
rightmost per DOM order.
@MarketDataApp MarketDataApp merged commit 389f7f0 into main Mar 6, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant